package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 入库单管理
 * 
 * @author YangShuo
 * 
 */

@Remote
@Local
public interface InitialInStockOrderDao {

	/**
	 * 根据主键查询
	 * 
	 * @param InitialInStockOrderId
	 *            入库单ID
	 * @return InitialInStockOrder 对象
	 */
	public InitialInStockOrder getInitialInStockOrderByCardInitialInStockOrderId(
			BigInteger InitialInStockOrderId);

	/**
	 * 新增记录
	 * 
	 * @param InitialInStockOrder
	 *            对象
	 */
	public void insertInitialInStockOrder(
			InitialInStockOrder InitialInStockOrder)
			throws PCPSApplicationException;

	/**
	 * 制卡入库列表
	 * 
	 * @param input
	 * @param startDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public List<InitialInStockOrder> getInitialInStockOrderList(
			PCPSWebInput input, String startDate, String endDate,
			String status, Integer page);

	/**
	 * 制卡入库总数
	 * 
	 * @param input
	 * @param startDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public Integer getInitialInStockOrderTotal(PCPSWebInput input,
			String startDate, String endDate, String status);

	/**
	 * 修改记录
	 * 
	 * @param InitialInStockOrder
	 *            对象
	 */
	public void updateInitialInStockOrderForCancel(
			InitialInStockOrder InitialInStockOrder)
			throws PCPSApplicationException;

	/**
	 * 入库单报表
	 * 
	 * @param webInput
	 * @param issueBranchNo
	 * @param isSingle
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public List<Object[]> getInitialInStockOrderReportByCondition(
			PCPSWebInput webInput, String issueBranchNo, boolean isSingle,
			String startTime, String endTime);

	/**
	 * 未入库卡查询辅助方法
	 * 
	 * @param batchNo
	 * @return
	 */
	public List<Integer[]> getInputCardSeqNoByBatchNo(String batchNo);

	public List<InitialInStockOrder> getInitialInStockOrderListByCond(
			InitialInStockOrder iiso, String status);

}
